package service

import (
	"context"
	"devops-super/api"
	"devops-super/api/clusters/v1"
	"devops-super/internal/model/mymodel"
)

// IDistributeTables 分发表服务接口
type IDistributeTables interface {
	// GetPageLst 分页获取分发表列表
	GetPageLst(ctx context.Context, in *v1.DistributeTablesGetPageLstReq) (out *api.PageLstRes[*mymodel.DistributeTableResponse], err error)
	// Add 添加分发表
	Add(ctx context.Context, in *v1.DistributeTablesAddReq) (err error)
	// Upt 更新分发表
	Upt(ctx context.Context, in *v1.DistributeTablesUptReq) (err error)
	// Del 删除分发表
	Del(ctx context.Context, id int) (err error)
	// GetOne 获取单条分发表
	GetOne(ctx context.Context, id int) (out *mymodel.DistributeTableResponse, err error)
	// GetOptions 获取分发表选项列表
	GetOptions(ctx context.Context, in *v1.DistributeTablesGetOptionsReq) (out *v1.DistributeTablesGetOptionsRes, err error)
	// GetOneByDbConnAndTable 获取单条分发表- 根据dbconn和表名
	GetOneByDbConnAndTable(ctx context.Context, dbConn, table string) (out *mymodel.DistributeTableResponse, err error)
}

var localDistributeTables IDistributeTables

// DistributeTables 获取分发表服务实例
func DistributeTables() IDistributeTables {
	if localDistributeTables == nil {
		panic("implement not found for interface IDistributeTables, forgot register?")
	}
	return localDistributeTables
}

// RegisterDistributeTables 注册分发表服务
func RegisterDistributeTables(i IDistributeTables) {
	localDistributeTables = i
}
